// IProtocol645Manager.aidl
package com.sgcc.pda.hw;
import com.sgcc.pda.hw.ReturnResult;
// Declare any non-default types here with import statements

interface IProtocol645Manager {

    /**
     * 向电表发起红外认证请求
     *
     * @param meterAddress 表通讯地址
     * @param random1      安全单元返回的随机数1
     * @param operator     操作员编号
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                            0:meterNo      返回-表号
     *                                            1:esamNo       返回-ESAM模块编号
     *                                            2:enRandom1    返回-经过ESAM模块加密的随机数1密文
     *                                            3:random2      返回-随机数2
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult infraIdentityReq(String meterAddress, String random1, String operator);

    /**
     * 电表执行红外认证
     *
     * @param meterAddress 表通讯地址
     * @param enRandom2    经安全单元加密的随机数2密文
     * @param operator     操作员编号
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas(code==0): size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult infraIdentity(String meterAddress, String enRandom2, String operator);

    /**
     * 电表执行远程身份认证
     *
     * @param meterAddress 表通讯地址
     * @param cipher       安全单元返回的密文
     * @param random1      安全单元返回的随机数1
     * @param meterNo      电表表号
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                            0:random2      返回-随机数2
     *                                            1:esamNo       返回-ESAM模块编号
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult identityAuthentication(String meterAddress, String cipher, String random1, String meterNo,
                                      String operator,int mode);

    /**
     * 向电表写入第一类数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param password     密码
     * @param operator     操作员编号
     * @param data         待写入数据
     * @param mac          安全单元计算的MAC
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult writeClass1Data(String meterAddress, String dataSign, String password, String operator,
                               String data, String mac,int mode);

    /**
     * 向电表写入第二类数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param password     密码
     * @param operator     操作员编号
     * @param data         待写入数据
     * @param mac          安全单元计算的MAC
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult writeClass2Data(String meterAddress, String dataSign, String password, String operator,
                               String data, String mac,int mode);

    /**
     * 向电表写入第三类数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param password     密码
     * @param operator     操作员编号
     * @param data         待写入数据
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult writeClass3Data(String meterAddress, String dataSign, String password, String operator,
                               String data,int mode);

    /**
     * 广播校时
     * 时间格式为ssMMhhddmmyy
     *
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult broadcastTiming(int mode);

    /**
     * 设置电表时间
     *
     * @param meterAddress 电表通讯地址
     * @param time         设置的时间字符串ssMMhhwwddmmyy（秒分时周日月年）
     * @param password     密码
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult Timing(String meterAddress, String keyLevel, String time, String password, String operator,int mode);

    /**
     * 设置客户编号
     *
     * @param meterAddress 电表通讯地址
     * @param consNo       客户编号
     * @param password     密码
     * @param operator     操作员编号
     * @param mac          安全单元计算MAC
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult writeConsNo(String meterAddress, String consNo, String password, String operator,
                           String mac,int mode);

    /**
     * 获取表地址
     *
     * @param cover        表地址掩码
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0：meterAddress 返回-表地址
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getMeterAddress(String cover,int mode);

    /**
     * 获取表号
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0：meterNo      返回-电表表号
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getMeterNo(String meterAddress,int mode);

    /**
     * 获取户号
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0：consNo       返回-户号
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getConsNo(String meterAddress,int mode);

    /**
     * 读取电表档案信息
     * @param meterAddress 电表通讯地址
     * @param dataSign      数据标识
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0: archives      返回-档案信息
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult Connect(String meterAddress,String dataSign,int mode);

    /**
     * 获取电表时间
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0：time         返回-电表时间，格式为：yyyymmddhhMMss
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getMeterTime(String meterAddress,int mode);

    /**
     * 读取电表时段数
     * @param meterAddress  通信地址
     * @param datasign   数据标识
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                      0：amount    返回 - 电表时段数
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readMeterPriodAmount(String meterAddress, String datasign,int mode);

    /**
     * 获取电表当前电能数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     要读取的数据标识
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-电能数据
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getPowerData(String meterAddress, String dataSign,int mode);

    /**
     * 获取所有正向有功电能
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-正向有功电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getAllPaPower(String meterAddress,int mode);

    /**
     * 获取所有反向有功电能
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-反向有功电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getAllNaPower(String meterAddress,int mode);

    /**
     * 获取所有正向无功（组合无功1）电能
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-正向无功（组合无功1）电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getAllPrPower(String meterAddress,int mode);

    /**
     * 获取所有反向无功（组合无功2）电能
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-返回-反向无功（组合无功2）电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getAllNrPower(String meterAddress,int mode);

    /**
     * 获取最大需量及发生时间
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                            0:data         返回-最大需量 格式为XX.XXXX
     *                                            1:time         返回-最大需量发生时间 格式为yyyymmddhhMM
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getMaxDemandAndTime(String meterAddress,int mode);

    /**
     * 获取日冻结时间点
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     *                       :List<String> datas（code==0）:
     *                                            0:time         返回-日冻结时间点 格式hhMM
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezenDayTime(String meterAddress,int mode);

    /**
     * 获取上N次冻结日期
     *
     * @param meterAddress 电表通讯地址
     * @param dayIndex     冻结数据索引
     * @param mode         通讯方式：0 红外  1 串口(485线)
     *                       :List<String> datas（code==0）:
     *                                            0:date         返回-冻结日期 格式：yyyymmddhhMM
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezeDate(String meterAddress, String dayIndex,int mode);

    /**
     * 读取电表冻结数据信息
     *
     * @param meterAddress 电表表地址
     * @param dayIndex     日期索引（第几次冻结）
     * @param dataSignBase 要读取的冻结数据数据标识
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-冻结数据信息
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezePowerData(String meterAddress, String dayIndex, int dataSignBase,int mode);

    /**
     * 读取日冻结正向有功电能
     *
     * @param meterAddress 电表通讯地址
     * @param dayIndex     冻结数据索引
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-日冻结正向有功电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezeDayPaPower(String meterAddress, String dayIndex,int mode);

    /**
     * 读取日冻结反向有功电能
     *
     * @param meterAddress 电表通讯地址
     * @param dayIndex     冻结数据索引
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-日冻结反向有功电能列表
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezeDayNaPower(String meterAddress, String dayIndex,int mode);

    /**
     * 读取日冻结正向无功(组合无功1)电能
     *
     * @param meterAddress 电表通讯地址
     * @param dayIndex     冻结数据索引
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-日冻结正向无功(组合无功1)电能
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezeDayPrPower(String meterAddress, String dayIndex,int mode);

    /**
     * 读取日冻结反向无功(组合无功2)电能
     *
     * @param meterAddress 电表通讯地址
     * @param dayIndex     冻结数据索引
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:  返回-日冻结反向无功(组合无功2)电能
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult getFreezeDayNrPower(String meterAddress, String dayIndex,int mode);

    /**
     * 更新密钥
     *
     * @param meterAddress 电表通讯地址
     * @param datasign     密钥类型
     * @param msg
     * @param cipher
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult keyUpdate(String meterAddress, String datasign, String msg, String cipher,String operator,int mode);
  /**
     * 更新密钥
     *
     * @param meterAddress 电表通讯地址
     * @param datasign     密钥类型
     * @param msg
     * @param cipher
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult keyUpdate2(String meterAddress, String datasign, String msg, String cipher,
                                                                   String operator, int mode);
  /**
     * 更新密钥
     *
     * @param meterAddress 电表通讯地址
     * @param datasign     密钥类型
     * @param msg
     * @param cipher
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult keyUpdate13(String meterAddress, String datasign, String operator, String cipher, String msg
                                             , int mode);

    /**
     * 远程充值并开户
     *
     * @param meterAddress 电表通讯地址
     * @param money        充值金额,以元为单位
     * @param time         充值次数
     * @param mac1         安全单元计算的金额与次数MAC
     * @param consNo       客户编号
     * @param mac2         安全单元计算客户编号MAC
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult recharge(String meterAddress, String money, String time, String mac1, String consNo,
                        String mac2, String operator,int mode);

    /**
     * 事件清零
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param keyLevel     密级
     * @param password     密码
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult eventClear(String meterAddress, String dataSign, String keyLevel, String password, String operator,int mode);

    /**
     * 电表清零
     *
     * @param meterAddress 电表通讯地址
     * @param keyLevel     密级
     * @param password     密码
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult meterClear(String meterAddress, String keyLevel, String password, String operator,int mode);

    /**
     * 设置电表当前通讯速率为其它标准速率
     *
     * @param meterAddress 电表通讯地址
     * @param baud         波特率字符串
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult setTbtl(String meterAddress, String baud,int mode);

    /**
     * 写电表通讯地址
     *
     * @param meterAddress    电表通讯地址
     * @param newMeterAddress 电表新通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult writeMeterAddress(String meterAddress, String newMeterAddress,int mode);

    /**
     * 获取费率信息
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     读取费率数据标识
     * @param index        费率序号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：rate         返回-费率信息
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readRate(String meterAddress, String dataSign, String index,int mode);

    /**
     * 读取电表第一套费率(当前套)
     *
     * @param meterAddress 电表通讯地址
     * @param rateIndex    费率序号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：rate         返回-电表第一套费率(当前套)
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readRate1(String meterAddress, String rateIndex,int mode);

    /**
     * 读取电表第二套费率(备用套)
     *
     * @param meterAddress 电表通讯地址
     * @param rateIndex    费率序号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：rate         返回-电表第二套费率(备用套)
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readRate2(String meterAddress, String rateIndex,int mode);

    /**
     * 读取电表余额
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：amount       返回-电表余额
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readResidualAmount(String meterAddress,int mode);

    /**
     * 读取电表充值信息
     *
     * @param meterAddress 电表通讯地址
     * @param operator      操作员号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：surplusAmount       返回-充值金额
     *                                              1：rechargeTimes       返回-充值时间
     *                                              2：customCode          返回-充值号
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readRechargeInfo(String meterAddress, String operator,int mode);

    /**
     * 读取电表透支金额
     *
     * @param meterAddress 电表通讯地址
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：amount       返回-电表透支金额
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readOverdrawAmount(String meterAddress,int mode);

    /**
     * 执行电表控制功能
     *
     * @param meterAddress 电表通讯地址
     * @param operator     操作员
     * @param cipherText   电表控制数据
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult powerOperate(String meterAddress, String operator, String cipherText,int mode);

    /**
     * 根据数据标识读取电表数据（非97表）
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @paramisMeter97     是否为97电能表
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：retData      返回-读取到的返回值
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult commonReadIsNot97(String meterAddress, String dataSign,int mode);

    /**
     * 根据数据标识读取电表数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @paramisMeter97     是否为97电能表
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:
     *                                              0：retData      返回-读取到的返回值
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult commonRead(String meterAddress, String dataSign, boolean isMeter97,int mode);

    ReturnResult getMeterSqSdInfo(String meterAddress, int mode);
      /**
         * 读取电表运行费率
         *
         * @param meterAddress 电表通讯地址
         * @param mode         通讯方式：0 红外  1 串口(485线)
         * @return ReturnResult  :int code  0 成功  其他失败
         *                       :List<String> datas（code==0）:
         *                                              0：amount       返回-电表运行费率
         *                       :List<String> datas(code==其他): size==0
         */
    ReturnResult getMeterFlInfo(String meterAddress, int mode);

    /**
         * 设置通信超时时间，如何串口已经打开，则改变为关闭状态，需要重新打开后生效
         *
         * @param sendTimeOut    发送超时时间 毫秒
         * @param receiveTimeOut 接收超时时间 毫秒
         */
          void setInfraTimeOut(int sendTimeOut, int receiveTimeOut) ;


  /**
     * 根据数据标识写电表数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param mode         通讯方式：0 红外  1 串口(485线)
      */
ReturnResult  commonWrite( String meterAddress, String dataSign, String keyLevel,
                                           String password, String operator, String data, String mac, int mode);
/**
     * 执行电表控制功能
     *
     * @param meterAddress 电表通讯地址
     * @param operator     操作员
     * @param cipherText   电表控制数据
     * @param keyLevel     密级
     * @param password     二级密码
     * @param mode         通讯方式：0 红外  1 串口(485线)
      */
ReturnResult commonOperate( String meterAddress, String keyLevel, String operator, String password, String cipherText, int mode);

/**
     * 执行97电表控制功能
     *
     * @param meterAddress 电表通讯地址
     * @param cipherText   电表控制数据
     * @param password     二级密码
     * @param mode         通讯方式：0 红外  1 串口(485线)
      */
ReturnResult powerOperate97( String meterAddress,  String password, String cipherText, int mode);
/**
     * 读取负荷类数据
     *
     * @param meterAddress 电表通讯地址
     * @param dataSign     数据标识
     * @param dataNum      负荷记录块数
     * @param dateTime     时间
      */
ReturnResult readLoadData( String meterAddress, String dataSign, String dataNum, String dateTime, int mode);


    /**
     * 远程开户或充值
     *
     * @param meterAddress 电表通讯地址
     * @param money        充值金额,以元为单位
     * @param time         充值次数
     * @param mac1         安全单元计算的金额与次数MAC
     * @param consNo       客户编号
     * @param mac2         安全单元计算客户编号MAC
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @param type         业务类型：0 开户  1 充值
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult openAccountOrRecharge(String meterAddress, String type, String money, String time, String mac1, String consNo,
                        String mac2, String operator, int mode);
    /**
     * 读取安全认证数据项的值
     *
     * @param meterAddress 电表通讯地址
     * @param operator     操作员编号
     * @param mode         通讯方式：0 红外  1 串口(485线)
     * @return ReturnResult  :int code  0 成功  其他失败
     *                       :List<String> datas（code==0）:   size==0
     *                       :List<String> datas(code==其他): size==0
     */
    ReturnResult readSafeData(String meterAddress,String itemCode,String operator, int mode);

}
